package com.example.design.patterns.geekbang.行为型.状态模式.有限状态机.状态模式;

import com.example.design.patterns.geekbang.行为型.状态模式.有限状态机.State;

/**
 * IMario 是状态的接口，定义了所有的事件。
 *
 * MarioStateMachine 依赖各个状态类是理所当然的，但是，反过来，各个状态类为什么要依赖 MarioStateMachine 呢？
 * 这是因为，各个状态类需要更新 MarioStateMachine 中的两个变量，score 和 currentState。
 */
public interface IMario { //所有状态类的接口
    State getName();

    void obtainMushRoom(MarioStateMachine stateMachine);

    void obtainCape(MarioStateMachine stateMachine);

    void obtainFireFlower(MarioStateMachine stateMachine);

    void meetMonster(MarioStateMachine stateMachine);
}


